<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <input type="text" class="dom1">
</body>
<script>
        "use strict";
let input  = document.querySelector('.dom1')
// function Ajax(){
//     console.log('我触发了');
// }
// input.addEventListener('input',function(){
//     Ajax()
// })

// 防抖函数

var num = 10
function debounce(fun,delay){
    let timer = null
    return function(...arg){
        if(timer){
            clearTimeout(timer)
        }
        timer =setTimeout(function(){
            console.log(this);//window
            fun.apply(this,arg) //在严格模式下，函数没有调用，他的this不再指向window，而是undefined
        },delay)
    }
}

// 操作函数
function fn(ev){
    console.log(ev); // apply的第二个参数就是给fn函数传参数
    console.log(this.num);//window  null
  console.log('我执行了多少次');
}
input.oninput = debounce(fn,1000)


// 会手写防抖 函数 （2中，，一个是不会立即执行，另一种会立即执行，） 和节流函数

Object.defineProperty()
Object.defineProxy()


</script>
</html>